def dfs(层数,其他参数):
    if (出局判断):  #到达最底层或满足退出条件
        更新答案  #答案一般用全局变量表示
        return  #返回到上一层
    
    剪枝  #在进一步dfs之前进行剪枝

    for(枚举下一层可能的情况):  #对每一个情况继续dfs
        if(used[i] == 0):  #如果状态i没有被占用，就可以进入下一层
            used[i] == 1  #标记状态i，表示已经被用过，在更底层不能被使用
            dfs(层数+1,其他参数)  #下一层
            used[i] = 0  #恢复状态，回溯时，不影响上一层对这个状态的使用

    return  #返回上一层